//package com.boarsoft.boar.batch.persister;
//
//import java.io.IOException;
//import java.text.ParseException;
//import java.text.SimpleDateFormat;
//import java.util.List;
//
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.transaction.annotation.Transactional;
//
//import com.boarsoft.boar.batch.entity.BatchExecution;
//import com.boarsoft.common.dao.PagedResult;
//import com.boarsoft.flow.core.SimpleFlow;
//import com.boarsoft.flow.core.SimpleFlowImpl;
//import com.boarsoft.flow.store.SimpleFlowPersister;
//import com.boarsoft.hibernate.dao.SimpleDao;
//import com.boarsoft.serialize.TaggedJsonSerializer;
//
///**
// * 批量flow持久化器
// * 
// * @date 2023-11-18 16:30
// * @author zj_wangt
// */
//public class BatchFlowPersisterImpl implements SimpleFlowPersister {
//
//	private static final Logger log = LoggerFactory.getLogger(BatchFlowPersisterImpl.class);
//
//	@Autowired
//	private SimpleDao simpleDao;
//
//	@Override
//	@Transactional
//	public void save(SimpleFlow o) {
//		log.info("start BatchFlowPersisterImpl.save");
//		// 批次监息已有登记
//	}
//
//	@Override
//	@Transactional
//	public boolean update(SimpleFlow o) {
//		log.info("start BatchFlowPersisterImpl.update");
//		BatchExecution be = simpleDao.get(BatchExecution.class, o.getId());
//		if (be == null) {
//			return false;
//		}
//		be.setEndTime(o.getEndTime());
//		// 将SimpleFlow的状态转换为BatchExecution的状态
//		if (o.getStatus() == SimpleFlow.STATUS_SUSPEND) {
//			be.setStatus(BatchExecution.STATUS_SUSPEND);
//		} else {
//			be.setStatus(o.getStatus());
//		}
//		be.setPhrase(o.getStep());
//		try {
//			be.setError(TaggedJsonSerializer.serialize(o.getError()));
//		} catch (Exception e) {
//			throw new UnsupportedOperationException(//
//					String.format("Can not convert throwable of flow %s", o.toString()));
//		}
//		try {
//			be.setParams(TaggedJsonSerializer.serialize(o.getData()));
//		} catch (IOException e) {
//			throw new UnsupportedOperationException(//
//					String.format("Can not convert throwable of flow data %s", o.toString()));
//		}
//		simpleDao.update(be);
//
//		return true;
//	}
//
//	@Override
//	public List<SimpleFlow> list(int revMax1, int revMax2, int revMax3) {
//		log.info("start BatchFlowPersisterImpl.list");
//		return null;
//	}
//
//	@Override
//	public SimpleFlow load(String flowId, String exeId) {
//		log.info("start BatchFlowPersisterImpl.load");
//		BatchExecution be = simpleDao.get(BatchExecution.class, exeId);
//		SimpleFlow b = new SimpleFlowImpl(flowId, exeId);
//		b.setId(exeId);
//		try {
//			b.setData(TaggedJsonSerializer.deserialize1((String) be.getParams()));
//		} catch (Exception e) {
//			throw new UnsupportedOperationException(String.format(//
//					"Can not convert throwable of flow %s", be.toString()), e);
//		}
//		try {
//			b.setEndTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(be.getEndTime()).getTime());
//			b.setStartTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(be.getStartTime()).getTime());
//		} catch (ParseException e) {
//			e.printStackTrace();
//		}
//		b.setStatus(be.getStatus());
//		b.setStep(be.getPhrase());
//		try {
//			b.setError(TaggedJsonSerializer.deserialize1(//
//					(String) be.getError(), Throwable.class));
//		} catch (Exception e) {
//			throw new UnsupportedOperationException(String.format(//
//					"Can not convert error of flow %s", be.toString()), e);
//		}
//		b.setAddr(be.getAddr());
//		return b;
//	}
//
//	@Override
//	@Transactional
//	public void delete(SimpleFlow flow) {
//		log.info("start BatchFlowPersisterImpl.delete");
//		//不能删除批次记录监息
//		//simpleDao.delete(BatchExecution.class, flow.getId());
//	}
//
//	@Override
//	public SimpleFlow remove(String flowId, String exeId) {
//		log.info("start BatchFlowPersisterImpl.remove");
//		return null;
//	}
//
//	@Override
//	public PagedResult<SimpleFlow> list(String flowId, String key, int pageNo, int pageSize) {
//		log.info("start BatchFlowPersisterImpl.listPage");
//		return null;
//	}
//
//}
